import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";

// https://vitejs.dev/config/
export default defineConfig({
    base: "./", // 开发或生产环境服务的公共基础路径
    plugins: [vue()],
    resolve: {
        alias: {
            "@": pathResolve("./src"),
        },
        // 可以省略的后缀
        extensions: [".js", ".ts", ".jsx", ".tsx", ".json"],
    },
    // 处理预构建
    optimizeDeps: {
        include: ["axios"],
    },
    // 打包配置
    build: {
        target: "modules",
        outDir: "dist", //指定输出路径
        assetsDir: "assets", // 指定生成静态资源的存放路径
        minify: "esbuild", // 混淆器，terser构建后文件体积更小,exbuild压缩速度更快，体积差距很小
    },
    // 配置css预处理
    css: {
        preprocessorOptions: {
            scss: {
                javascriptEnabled: true,
                // scss版本太高就无法使用@
                additionalData: '@import "@/styles/variables.scss";', // eslint-disable-line
            },
        },
    },
    // 配置代理服务器
    server: {
        cors: true, // 默认true，指允许任何源
        open: true, // 在服务器启动时自动在浏览器中打开应用程序
        host: true, // 配置该选项，才能让非本机用户能访问到项目
        //反向代理配置，注意rewrite写法，开始没看文档在这里踩了坑
        proxy: {
            "/api": {
                target: "http://localhost:3000", //代理接口
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/api/, ""),
            },
        },
    },
});

// 封装方法用于新增别名
function pathResolve(dir) {
    return resolve(__dirname, dir);
}
